////////////////////////////////////////////////////////////////////////////////////////
//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING THIS SOFTWARE
//
//  By downloading, copying, installing or using the software you agree to this license.
//  If you do not agree to this license, do not download, install, copy or use the software.
//
// Copyright (C) 2013, AerVision Technologies Pty Ltd, all rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
//   * Redistribution's of source code must retain the above copyright notice,
//     this list of conditions and the following disclaimer.
//
//   * Redistribution's in binary form must reproduce the above copyright notice,
//     this list of conditions and the following disclaimer in the documentation
//     and/or other materials provided with the distribution.
//
//   * The name of AerVision Technologies, may not be used to endorse or promote products
//     derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors to demonstrate 
// www.AerCloud.net Framework as a Service API (FaaS), "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the copyright holder or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
////////////////////////////////////////////////////////////////////////////////////////


package com.aercloud.client.api;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;


/**
 * This class was generated by the JAX-WS RI.
 * JAX-WS RI 2.1.6 in JDK 6
 * Generated source version: 2.1
 * 
 */
@WebService(name = "IISMWebAPI", targetNamespace = "http://tempuri.org/")
@XmlSeeAlso({
    ObjectFactory.class
})
public interface IISMWebAPI {


    /**
     * 
     * @param accessKey
     * @param command
     * @return
     *     returns java.lang.String
     * @throws IISMWebAPIQueryFaultExceptionFaultFaultMessage
     */
    @WebMethod(action = "http://tempuri.org/IISMWebAPI/query")
    @WebResult(name = "queryResult", targetNamespace = "http://tempuri.org/")
    @RequestWrapper(localName = "query", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.Query")
    @ResponseWrapper(localName = "queryResponse", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.QueryResponse")
    public String query(
        @WebParam(name = "access_key", targetNamespace = "http://tempuri.org/")
        String accessKey,
        @WebParam(name = "command", targetNamespace = "http://tempuri.org/")
        String command)
        throws IISMWebAPIQueryFaultExceptionFaultFaultMessage
    ;

    /**
     * 
     * @param accessKey
     * @return
     *     returns com.aercloud.client.api.ArrayOfstring
     * @throws IISMWebAPIGetNamesFaultExceptionFaultFaultMessage
     */
    @WebMethod(operationName = "get_names", action = "http://tempuri.org/IISMWebAPI/get_names")
    @WebResult(name = "get_namesResult", targetNamespace = "http://tempuri.org/")
    @RequestWrapper(localName = "get_names", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.GetNames")
    @ResponseWrapper(localName = "get_namesResponse", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.GetNamesResponse")
    public ArrayOfstring getNames(
        @WebParam(name = "access_key", targetNamespace = "http://tempuri.org/")
        String accessKey)
        throws IISMWebAPIGetNamesFaultExceptionFaultFaultMessage
    ;

    /**
     * 
     * @param accessKey
     * @param name
     * @return
     *     returns java.lang.String
     * @throws IISMWebAPIGetNameTagFaultExceptionFaultFaultMessage
     */
    @WebMethod(operationName = "get_name_tag", action = "http://tempuri.org/IISMWebAPI/get_name_tag")
    @WebResult(name = "get_name_tagResult", targetNamespace = "http://tempuri.org/")
    @RequestWrapper(localName = "get_name_tag", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.GetNameTag")
    @ResponseWrapper(localName = "get_name_tagResponse", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.GetNameTagResponse")
    public String getNameTag(
        @WebParam(name = "access_key", targetNamespace = "http://tempuri.org/")
        String accessKey,
        @WebParam(name = "name", targetNamespace = "http://tempuri.org/")
        String name)
        throws IISMWebAPIGetNameTagFaultExceptionFaultFaultMessage
    ;

    /**
     * 
     * @param accessKey
     * @param tag
     * @param name
     * @throws IISMWebAPISetNameTagFaultExceptionFaultFaultMessage
     */
    @WebMethod(operationName = "set_name_tag", action = "http://tempuri.org/IISMWebAPI/set_name_tag")
    @RequestWrapper(localName = "set_name_tag", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.SetNameTag")
    @ResponseWrapper(localName = "set_name_tagResponse", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.SetNameTagResponse")
    public void setNameTag(
        @WebParam(name = "access_key", targetNamespace = "http://tempuri.org/")
        String accessKey,
        @WebParam(name = "name", targetNamespace = "http://tempuri.org/")
        String name,
        @WebParam(name = "tag", targetNamespace = "http://tempuri.org/")
        String tag)
        throws IISMWebAPISetNameTagFaultExceptionFaultFaultMessage
    ;

    /**
     * 
     * @param accessKey
     * @param imageName
     * @param name
     * @return
     *     returns byte[]
     * @throws IISMWebAPIGetImagePngFaultExceptionFaultFaultMessage
     */
    @WebMethod(operationName = "get_image_png", action = "http://tempuri.org/IISMWebAPI/get_image_png")
    @WebResult(name = "get_image_pngResult", targetNamespace = "http://tempuri.org/")
    @RequestWrapper(localName = "get_image_png", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.GetImagePng")
    @ResponseWrapper(localName = "get_image_pngResponse", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.GetImagePngResponse")
    public byte[] getImagePng(
        @WebParam(name = "access_key", targetNamespace = "http://tempuri.org/")
        String accessKey,
        @WebParam(name = "name", targetNamespace = "http://tempuri.org/")
        String name,
        @WebParam(name = "image_name", targetNamespace = "http://tempuri.org/")
        String imageName)
        throws IISMWebAPIGetImagePngFaultExceptionFaultFaultMessage
    ;

    /**
     * 
     * @param accessKey
     * @param imageName
     * @param name
     * @return
     *     returns byte[]
     * @throws IISMWebAPIGetImageJpgFaultExceptionFaultFaultMessage
     */
    @WebMethod(operationName = "get_image_jpg", action = "http://tempuri.org/IISMWebAPI/get_image_jpg")
    @WebResult(name = "get_image_jpgResult", targetNamespace = "http://tempuri.org/")
    @RequestWrapper(localName = "get_image_jpg", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.GetImageJpg")
    @ResponseWrapper(localName = "get_image_jpgResponse", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.GetImageJpgResponse")
    public byte[] getImageJpg(
        @WebParam(name = "access_key", targetNamespace = "http://tempuri.org/")
        String accessKey,
        @WebParam(name = "name", targetNamespace = "http://tempuri.org/")
        String name,
        @WebParam(name = "image_name", targetNamespace = "http://tempuri.org/")
        String imageName)
        throws IISMWebAPIGetImageJpgFaultExceptionFaultFaultMessage
    ;

    /**
     * 
     * @param accessKey
     * @param name
     * @return
     *     returns com.aercloud.client.api.ArrayOfstring
     * @throws IISMWebAPIGetImageNamesFaultExceptionFaultFaultMessage
     */
    @WebMethod(operationName = "get_image_names", action = "http://tempuri.org/IISMWebAPI/get_image_names")
    @WebResult(name = "get_image_namesResult", targetNamespace = "http://tempuri.org/")
    @RequestWrapper(localName = "get_image_names", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.GetImageNames")
    @ResponseWrapper(localName = "get_image_namesResponse", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.GetImageNamesResponse")
    public ArrayOfstring getImageNames(
        @WebParam(name = "access_key", targetNamespace = "http://tempuri.org/")
        String accessKey,
        @WebParam(name = "name", targetNamespace = "http://tempuri.org/")
        String name)
        throws IISMWebAPIGetImageNamesFaultExceptionFaultFaultMessage
    ;

    /**
     * 
     * @param imageData
     * @param accessKey
     * @param imageName
     * @param imageFormat
     * @param name
     * @param objectType
     * @param autoDetect
     * @return
     *     returns java.lang.Boolean
     * @throws IISMWebAPISaveImageFaultExceptionFaultFaultMessage
     */
    @WebMethod(operationName = "save_image", action = "http://tempuri.org/IISMWebAPI/save_image")
    @WebResult(name = "save_imageResult", targetNamespace = "http://tempuri.org/")
    @RequestWrapper(localName = "save_image", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.SaveImage")
    @ResponseWrapper(localName = "save_imageResponse", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.SaveImageResponse")
    public Boolean saveImage(
        @WebParam(name = "access_key", targetNamespace = "http://tempuri.org/")
        String accessKey,
        @WebParam(name = "object_type", targetNamespace = "http://tempuri.org/")
        String objectType,
        @WebParam(name = "image_format", targetNamespace = "http://tempuri.org/")
        String imageFormat,
        @WebParam(name = "image_data", targetNamespace = "http://tempuri.org/")
        byte[] imageData,
        @WebParam(name = "name", targetNamespace = "http://tempuri.org/")
        String name,
        @WebParam(name = "image_name", targetNamespace = "http://tempuri.org/")
        String imageName,
        @WebParam(name = "auto_detect", targetNamespace = "http://tempuri.org/")
        Boolean autoDetect)
        throws IISMWebAPISaveImageFaultExceptionFaultFaultMessage
    ;

    /**
     * 
     * @param accessKey
     * @return
     *     returns java.lang.Boolean
     * @throws IISMWebAPIPurgeAllFaultExceptionFaultFaultMessage
     */
    @WebMethod(operationName = "purge_all", action = "http://tempuri.org/IISMWebAPI/purge_all")
    @WebResult(name = "purge_allResult", targetNamespace = "http://tempuri.org/")
    @RequestWrapper(localName = "purge_all", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.PurgeAll")
    @ResponseWrapper(localName = "purge_allResponse", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.PurgeAllResponse")
    public Boolean purgeAll(
        @WebParam(name = "access_key", targetNamespace = "http://tempuri.org/")
        String accessKey)
        throws IISMWebAPIPurgeAllFaultExceptionFaultFaultMessage
    ;

    /**
     * 
     * @param accessKey
     * @param imageName
     * @param name
     * @return
     *     returns java.lang.Boolean
     * @throws IISMWebAPIDeleteImageFaultExceptionFaultFaultMessage
     */
    @WebMethod(operationName = "delete_image", action = "http://tempuri.org/IISMWebAPI/delete_image")
    @WebResult(name = "delete_imageResult", targetNamespace = "http://tempuri.org/")
    @RequestWrapper(localName = "delete_image", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.DeleteImage")
    @ResponseWrapper(localName = "delete_imageResponse", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.DeleteImageResponse")
    public Boolean deleteImage(
        @WebParam(name = "access_key", targetNamespace = "http://tempuri.org/")
        String accessKey,
        @WebParam(name = "name", targetNamespace = "http://tempuri.org/")
        String name,
        @WebParam(name = "image_name", targetNamespace = "http://tempuri.org/")
        String imageName)
        throws IISMWebAPIDeleteImageFaultExceptionFaultFaultMessage
    ;

    /**
     * 
     * @param accessKey
     * @param name
     * @return
     *     returns java.lang.Boolean
     * @throws IISMWebAPIDeleteImagesFaultExceptionFaultFaultMessage
     */
    @WebMethod(operationName = "delete_images", action = "http://tempuri.org/IISMWebAPI/delete_images")
    @WebResult(name = "delete_imagesResult", targetNamespace = "http://tempuri.org/")
    @RequestWrapper(localName = "delete_images", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.DeleteImages")
    @ResponseWrapper(localName = "delete_imagesResponse", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.DeleteImagesResponse")
    public Boolean deleteImages(
        @WebParam(name = "access_key", targetNamespace = "http://tempuri.org/")
        String accessKey,
        @WebParam(name = "name", targetNamespace = "http://tempuri.org/")
        String name)
        throws IISMWebAPIDeleteImagesFaultExceptionFaultFaultMessage
    ;

    /**
     * 
     * @param imageData
     * @param accessKey
     * @param imageFormat
     * @param maxNumResults
     * @param objectType
     * @param autoDetect
     * @return
     *     returns com.aercloud.client.api.ArrayOfsearchResult
     * @throws IISMWebAPISearchByImageFaultExceptionFaultFaultMessage
     */
    @WebMethod(operationName = "search_by_image", action = "http://tempuri.org/IISMWebAPI/search_by_image")
    @WebResult(name = "search_by_imageResult", targetNamespace = "http://tempuri.org/")
    @RequestWrapper(localName = "search_by_image", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.SearchByImage")
    @ResponseWrapper(localName = "search_by_imageResponse", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.SearchByImageResponse")
    public ArrayOfsearchResult searchByImage(
        @WebParam(name = "access_key", targetNamespace = "http://tempuri.org/")
        String accessKey,
        @WebParam(name = "object_type", targetNamespace = "http://tempuri.org/")
        String objectType,
        @WebParam(name = "image_format", targetNamespace = "http://tempuri.org/")
        String imageFormat,
        @WebParam(name = "image_data", targetNamespace = "http://tempuri.org/")
        byte[] imageData,
        @WebParam(name = "max_num_results", targetNamespace = "http://tempuri.org/")
        Integer maxNumResults,
        @WebParam(name = "auto_detect", targetNamespace = "http://tempuri.org/")
        Boolean autoDetect)
        throws IISMWebAPISearchByImageFaultExceptionFaultFaultMessage
    ;

    /**
     * 
     * @param imageData
     * @param accessKey
     * @param imageFormat
     * @param objectType
     * @return
     *     returns com.aercloud.client.api.ArrayOfdetectedObject
     * @throws IISMWebAPIDetectFaultExceptionFaultFaultMessage
     */
    @WebMethod(action = "http://tempuri.org/IISMWebAPI/detect")
    @WebResult(name = "detectResult", targetNamespace = "http://tempuri.org/")
    @RequestWrapper(localName = "detect", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.Detect")
    @ResponseWrapper(localName = "detectResponse", targetNamespace = "http://tempuri.org/", className = "com.aercloud.client.api.DetectResponse")
    public ArrayOfdetectedObject detect(
        @WebParam(name = "access_key", targetNamespace = "http://tempuri.org/")
        String accessKey,
        @WebParam(name = "object_type", targetNamespace = "http://tempuri.org/")
        String objectType,
        @WebParam(name = "image_format", targetNamespace = "http://tempuri.org/")
        String imageFormat,
        @WebParam(name = "image_data", targetNamespace = "http://tempuri.org/")
        byte[] imageData)
        throws IISMWebAPIDetectFaultExceptionFaultFaultMessage
    ;

}
